--传入优惠券id，用户id
local seckillId = ARGV[1]
local userId =ARGV[2]
local orderId = ARGV[3]

--拼接KEY（1.库存key 2.订单key）
local seckillKey ='seckill:stock:'..seckillId
local orderKey ='seckill:order:'..seckillId

--脚本业务
--1.库存是否充足
if(tonumber(redis.call('get',seckillKey)) <= 0) then
    --库存不足返回1
    return 1
end
--2.一人是否一单
if(redis.call('sismember',orderKey,userId) == 1 ) then
    --存在，说明重复下单，返回2
    return 2
end
--3.扣减库存 incrby seckillKey -1
redis.call('incrby',seckillKey,-1)
--4.保存用户id在order集合
redis.call('sadd',orderKey,userId)
--将数据添加到阻塞队列中，开辟一个独立线程去执行下单操做
redis.call('xadd','stream.orders','*','userId',userId,'voucherId',seckillId,'id',orderId)
return 0


